dropwizard metrics

您所在的位置:网站首页 Dropwizard Metrics Library dropwizard metrics

dropwizard metrics

2023-08-05 03:49| 来源: 网络整理| 查看: 265

之前在healthcheck中介绍了怎样通过metrics lib往系统中增加一些简单的健康侦測。如今讲讲dropwizard metrics更重要的部分。记录系统的度量信息。

dropwizard提供了多种度量方式:最简单记数counter,复杂点的实用于计算时间分布的histogram,用于计算速率的meter,以及同一时候有histogram和meter功能的timer。有兴趣能够去看看实现细节,类非常少,非常easy读懂。 Metrics的报告方式和healthcheck非常相似。库自生提供的各种报告渠道。

也能够非常easy自己扩展。 Metrics提供了各种包,能够帮助简化开发。当中metrics-servlet能够直接把metrics和healthcheck的信息在web request里面展示出来。 接下来给个使用的样例。对Web应用的请求进行度量,然后通过AdminServlet获取metrics和healthcheck信息。

在maven中导入须要的包 io.dropwizard.metrics metrics-core ${metrics.version} io.dropwizard.metrics metrics-servlets ${metrics.version} io.dropwizard.metrics metrics-json ${metrics.version} io.dropwizard.metrics metrics-healthchecks ${metrics.version} 创建用来注冊metrics和healtcheck的servlet public class HealthCheckServletContextListener extends HealthCheckServlet.ContextListener{ public static final HealthCheckRegistry HEALTH_CHECK_REGISTRY = new HealthCheckRegistry(); @Override protected HealthCheckRegistry getHealthCheckRegistry() { return HEALTH_CHECK_REGISTRY; } } public class MetricsServletContextListener extends MetricsServlet.ContextListener { public static final MetricRegistry METRIC_REGISTRY = new MetricRegistry(); @Override protected MetricRegistry getMetricRegistry() { return METRIC_REGISTRY; } } 在Spring Web action中创建timer。增加到MetricsServletContextListener的MetricRegistery中,对每一个方法開始调用time得到context,结束运行context.stop private final Timer executions = MetricsServletContextListener.METRIC_REGISTRY.timer(MetricRegistry.name(SignupController.class, "executions")); @Autowired private UserService userService; @RequestMapping(method = RequestMethod.POST) public String register(@Valid User user, BindingResult bindingResult, RedirectAttributes redirectAttributes) { final Timer.Context context = executions.time(); if (bindingResult.hasErrors()) { redirectAttributes.addFlashAttribute("user", user); redirectAttributes.addFlashAttribute(BindingResult.MODEL_KEY_PREFIX + "user", bindingResult); context.stop(); return "redirect:/"; } try { userService.registerUser(user); redirectAttributes.addFlashAttribute("username", user.getUsername()); return "redirect:/"; } catch (UserExistsException e) { return "redirect:/"; } finally { context.stop(); } } 在Web.xml中配置AdminServlet訪问路径,配置2个listener com.cloud.demo.HealthCheckServletContextListener com.cloud.demo.MetricsServletContextListener metrics com.codahale.metrics.servlets.AdminServlet metrics /metrics/*

这样就能够通过/metrics/healthcheck或者/metrics/metrics查看系统度量数据。

记住:系统度量最重要的是要分析系统中须要什么样的度量信息。技术实现反而不是那么重要。

很多其它dropwizard的功能包能够參考使用手冊



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3